/**
 开发团队 :
 开发人员 : ZBB295
 开发时间 : 2022/8/14 16:02
 文件名称 : user-edit-fn.js
 开发工具 : WebStorm
 */


//引入用户集合的构造函数，用对象解构的方式
const { User,validateUser } = require('../../model/user')
//引入加密模块
const bcryptjs = require('bcryptjs')
// const {json} = require("express");


const userEditFn_hander = async (req,res,next)=>{
    //实施验证
    try {
        await validateUser(req.body);
    }catch (ex) {
        //验证不通过
        //重定向到用户添加页面
        // return res.redirect(`/admin/user-edit?message=${ex.message}`);
        //因为next方法内只能传入字符串所以用JSON字符方法
        return next(JSON.stringify({path:'/admin/user-edit',message:ex.message}));
    }

    //根据用户邮箱地址查询用户是否存在
    let user = await User.findOne({email:req.body.email})
    //如果用户已经存在，邮箱地址已经被别人占用
    if (user){
        //重定向回用户添加页面
        // return res.redirect(`/admin/user-edit?message=邮箱地址已经被占用`)
        return next(JSON.stringify({path:'/admin/user-edit',message:'邮箱地址已经被占用'}));
    }
    //没有被占用则进行密码加密后存入数据库
    //对密码进行加密
    const password = bcryptjs.hashSync(req.body.password, 10)
    //替换密码
    req.body.password = password;
    //将用户信息添加到数据库中
    await User.create(req.body);

    //将页面重定向到用户列表页面
    res.redirect('/admin/user');
}

module.exports = userEditFn_hander;